﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Xml;
using System.Xml.Linq;
using DocumentFormat.OpenXml.Packaging;

class Program
{
    public static XDocument LoadXDocument(OpenXmlPart part)
    {
        XDocument xdoc;
        using (StreamReader streamReader = new StreamReader(part.GetStream()))
            xdoc = XDocument.Load(XmlReader.Create(streamReader));
        return xdoc;
    }

    static void Main(string[] args)
    {
        const string filename = "Test.docx";

        using (WordprocessingDocument wordDoc = WordprocessingDocument.Open(filename, true))
        {
            MainDocumentPart mainPart = wordDoc.MainDocumentPart;
            StyleDefinitionsPart styleDefinitionsPart = mainPart.StyleDefinitionsPart;
            XDocument xDoc = LoadXDocument(mainPart);
            XDocument styleDoc = LoadXDocument(styleDefinitionsPart);

            string XML = xDoc.ToString(); //Uložení zdrojového kódu xml (document.xml) do stringu

            using (StreamWriter zapis = new StreamWriter("soubor.xml")) //vytvoření pomocného souboru xml
            {
                zapis.Write(XML); //zapsání zdrojového kódu (document.xml uložený ve stringu) do pomocného souboru
            }

            XmlReader cteni = new XmlTextReader("soubor.xml"); //cteni pomocného souboru

            while (cteni.Read()) //cteci cyklus
            {
                // reader.Name obsahuje nazev aktualniho uzlu (node)
                if (cteni.Name == "w:t") //vybýrá pouze uzly <w:t> ve kterých je text
                {
                    Console.Write(cteni.ReadString()); // vypisuje text, který je v uzlech <w:t>
                }
            }
            cteni.Close();

            File.Delete("soubor.xml"); //maže pomocný soubor
        }
    }
}